package connect_tx_sdk.utils;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.digest.DigestUtils;
import sun.misc.BASE64Encoder;


public class SecretUtils {

	private static String PRIVATE_KEY = "hiyoucai";

	/**
	 * 
	 * 方法说明：带密钥MD5 <br/>
	 * 创建日期：2011-6-17,下午02:12:02,hyc <br/>
	 */
	public final static String MD5(String s) {
		return DigestUtils.md5Hex(s + PRIVATE_KEY);
	}

	/**
	 * 
	 * 方法说明：神奇的有才对称加密算法 <br/>
	 * 创建日期：2011-6-17,下午02:11:53,hyc <br/>
	 */
	public static String encodePath(Integer userId) {
		if (userId == null || userId < 0) {
			return "";
		}
		int[] en = { 5, 8, 1, 7, 6, 2, 9, 0, 4, 3 };

		String u = userId.toString();
		String s = "";
		for (int i = 0; i < u.length(); i++) {
			char w = u.charAt(i);
			int ii = Integer.parseInt(w + "");
			s += en[ii];
		}

		return s;
	}

	/**
	 * 
	 * 方法说明：神奇的有才解密算法 <br/>
	 * 创建日期：2011-6-17,下午02:11:36,hyc <br/>
	 */
	public static int decodePath(String userId) {
		if(userId == null || userId.length() < 1){
			return 0;
		}
		int[] de = { 7, 2, 5, 9, 8, 0, 4, 3, 1, 6 };

		String u = userId.toString();
		String s = "";
		for (int i = 0; i < u.length(); i++) {
			char w = u.charAt(i);
			int ii = Integer.parseInt(w + "");
			s += de[ii];
		}

		return Integer.parseInt(s);
	}

	/**
	 * 
	 * 方法说明：取得符合QQ加密算法的字符串 <br/>
	 * 创建日期：2011-6-17,下午02:11:09,hyc <br/>
	 */
	public static String getBase64Mac(String stepA, String stepB) {
		byte[] oauthSignature = null;
		try {
			Mac mac = Mac.getInstance("HmacSHA1");
			SecretKeySpec spec = new SecretKeySpec(stepB.getBytes("US-ASCII"), "HmacSHA1");
			mac.init(spec);
			oauthSignature = mac.doFinal(stepA.getBytes("US-ASCII"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return new BASE64Encoder().encode(oauthSignature);
	}

}
